
"""
Chrome浏览器驱动下载
https://npm.taobao.org/mirrors/chromedriver/

火狐浏览器驱动下载
https://npm.taobao.org/mirrors/geckodriver/

"""
from selenium import webdriver
import time
# driver = webdriver.Chrome()
# driver.get("http://www.baidu.com/")
# time.sleep(3)
# driver.close()
# driver.quit()



# 实例化浏览器驱动对象（创建浏览器驱动对象）
driver = webdriver.Chrome()  # 创建的是谷歌浏览器驱动对象   chrome后面有括号，而且第一个字母要大写
# driver = webdriver.Firefox() # 创建火狐浏览器驱动对象
# 打开本地的html文件
driver.get("file:///E:/Pycharm/pythonProject_20221110/4UI%E8%87%AA%E5%8A%A8%E5%8C%96/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E5%9F%BA%E7%A1%80/pagetest/%E6%B3%A8%E5%86%8CA.html")
# 1).通过class_name定位电话号码A，并输入：18611111111
driver.find_element_by_class_name("telA").send_keys("18611111111")
# 2).通过class_name定位电子邮箱A，并输入：123@qq.com
driver.find_element_by_class_name("dzyxA").send_keys("123@qq.com")
# 通过ID定位到用户名输入框并在用户名输入框中输入admin
driver.find_element_by_id("userA").send_keys("admin")
# 通过ID定位到密码输入框并在密码输入框中输入123456
driver.find_element_by_id("passwordA").send_keys("123456")
# 通过name定位用户名，输入admin
driver.find_element_by_name("userA").send_keys("admin")
# 通过name定位密码， 输入123456
driver.find_element_by_name("passwordA").send_keys("123456")
# 1).使用tag_name定位用户名输入框，并输入：admin
driver.find_element_by_tag_name("input").send_keys("admin")
# 使用tag_name定位密码输入框(第二个input标签)，并输入：123456
elements = driver.find_elements_by_tag_name("input")
elements[2].send_keys("123456")
# 等待3s（代表业务操作）
time.sleep(3)     # 通过快捷导包的方式导入time模块，  光标要在time后面再按alt+enter
# 通过linu_text定位到新浪网站并点击
# driver.find_element_by_link_text("新浪").click()
driver.find_element_by_link_text("访问 新浪 网站").click()
# 通过partial_link_text定位到新浪网站并点击
driver.find_element_by_partial_link_text("访问 新浪 网站").click()
time.sleep(3)
# 退出浏览器驱动(释放系统资源)
driver.quit()

"""
1. maximize_window() 最大化浏览器窗口 --> 模拟浏览器最大化按钮
2. set_window_size(width, height) 设置浏览器窗口大小 --> 设置浏览器宽、高(像素点)
3. set_window_position(x, y) 设置浏览器窗口位置 --> 设置浏览器位置
4. back() 后退 --> 模拟浏览器后退按钮
5. forward() 前进 --> 模拟浏览器前进按钮
6. refresh() 刷新 --> 模拟浏览器F5刷新
7. close() 关闭当前窗口 --> 模拟点击浏览器关闭按钮
8. quit() 关闭浏览器驱动对象 --> 关闭所有程序启动的窗口
9. title 获取页面title
10. current_url 获取当前页面URL


说明：在Selenium中将操作鼠标的方法封装在ActionChains类中
实例化对象：
action = ActionChains(driver)
方法：
1. context_click(element) 右击 --> 模拟鼠标右键点击效果
2. double_click(element) 双击 --> 模拟鼠标双击效果
3. drag_and_drop(source, target) 拖动 --> 模拟鼠标拖动效果
4. move_to_element(element) 悬停 --> 模拟鼠标悬停效果
5. perform() 执行 --> 此方法用来执行以上所有鼠标操作
为了更好的学习其他方法，我们先学习perform()执行方法,因为所有的方法都需要执行才能生效
"""
"""
显式等待
概念：定位指定元素时，如果能定位到元素则直接返回该元素，不触发等待； 如果不能定位到该
元素，则间隔一段时间后再去定位元素； 如果在达到最大时长时还没有找到指定元素，则抛出超
时异常 TimeoutException 。

1. 导包 等待类 --> from selenium.webdriver.support.wait import WebDriverWait
2. WebDriverWait(driver, timeout, poll_frequency=0.5)
1). driver：浏览器驱动对象
2). timeout：超时的时长，单位：秒
3). poll_frequency：检测间隔时间，默认为0.5秒
3. 调用方法 until(method)：直到...时
1). method：函数名称，该函数用来实现对元素的定位
2). 一般使用匿名函数来实现：lambda x: x.find_element_by_id("userA")
4. element = WebDriverWait(driver, 10, 1).until(lambda x: x.find_element_by_id("userA")
)

"""

